const tags = '2,3,4,5,6,7,8,9,10,j,q,k,a,' +  //单张
  '22,33,44,55,66,77,88,99,1010,jj,qq,kk,aa,' + //  两张
  '222,333,444,555,666,777,888,999,101010,jjj,qqq,kkk,aaa,' + //  三张
  '2222,3333,4444,5555,6666,7777,8888,9999,10101010,jjjj,qqqq,kkkk,aaaa,' +  // 四张
  'hjoker,sjoker,' + //大小王
  'hjokersjoker,' + // 双王
  'check' // 过牌

// 服务器静态资源地址，后面要封装起来  ---->待优化
const staticSrc = 'http://127.0.0.1:3038/jj-sound/chupai-yinxiao/';

// 利用柯里化函数创建缓存数据集合并取值
export function makeMap(tags) {
  let set = {};
  let list = tags.split(",");
  list.forEach(key => {
    switch (key) {
      case 'check': //过牌
        // 不要将过牌音效链接缓存起来，因为一旦缓存起来后面就不会变，导致过牌一直是同一个音效
        // 将要随机的过牌音效全部缓存起来，到取值的时候在随机抽取一个
        set['check_1'] = `${staticSrc}lord_v_pass_1.mp3`;
        set['check_2'] = `${staticSrc}lord_v_pass_2.mp3`;
        set['check_3'] = `${staticSrc}lord_v_pass_3.mp3`;
        break;
      case 'sjoker':  // 大王
        set[key] = `${staticSrc}lord_v_1card_big_joker.mp3`;
        break;
      case 'hjoker':  // 小王
        set[key] = `${staticSrc}lord_v_1card_small_joker.mp3`;
        break;
      case 'hjokersjoker':  //  双王
        set[key] = `${staticSrc}lord_v_2card_couple.mp3`;
        break;
      default:  //正常牌
        // 解决特殊字符 10 
        let length = key === '10' || key === '1010' || key === '101010' ? key.length / 2 : key.length;
        let card = key === '10' || key === '1010' || key === '101010' ? key[0] + key[1] : key[0];
        // 四张牌音效位炸弹   ----> 待优化
        key !== '1010' && key.length === 4 || key === '10101010' ?
          set[key] = `${staticSrc}lord_v_bomb_${parseInt('12'.charAt(Math.floor(Math.random() * '12'.length)))}.mp3` :
          set[key] = `${staticSrc}lord_v_${length}card_${card}.mp3`;
        break;
    }
  })
  return function (val) {
    // 当传进来的是过牌的值，取值的时候随机抽取一个过牌音效
    val = val === 'check' ? `check_${parseInt('123'.charAt(Math.floor(Math.random() * '123'.length)))}` : val;
    return set[val];
  }
}

export let toggleSrc = makeMap(tags);


// 在字符串 123 中随机抽取一个数字出来
// parseInt('123'.charAt(Math.floor(Math.random() * '123'.length)))